package br.com.iswe.gwt.crud.server.controller;

import java.util.List;

import br.com.iswe.core.entidades.gwt.BeanMap;
import br.com.iswe.core.entidades.gwt.RemoteEntityObject;
import br.com.iswe.core.entidades.util.PropertyAssemblerInfo;
import br.com.iswe.gwt.ui.client.QueryInfo;
import br.com.iswe.gwt.ui.client.RequestInfo;

public interface GwtBeanMapController<ENTITY extends RemoteEntityObject> extends GwtDomainController<ENTITY> {
	
	BeanMap deletar(BeanMap mapBean);
	
	BeanMap deletar(List<BeanMap> itens);

	List<BeanMap> consultar(BeanMap filtro, QueryInfo pageInfo);
	
	BeanMap saveMapBean(BeanMap bean, RequestInfo requestInfo);
	
	ENTITY mapToBean(BeanMap mapBean);
	
	List<BeanMap> getBeanMapList(List<ENTITY> dados, PropertyAssemblerInfo propertyAssemblerInfo);

	BeanMap detalhar(BeanMap filtro, RequestInfo requestInfo);

	ENTITY associarManyToManyAsBeanMap(BeanMap bean, RequestInfo requestInfo);
	ENTITY removerManyToManyAsBeanMap(BeanMap bean, RequestInfo requestInfo);
	
}
